#include "Graficador.h"


Graficador::Graficador() {


}

Graficador::~Graficador() {

}

void Graficador::imprimirTablero(Tablero* tablero, string ruta){
//Obtengo todos los casilleros del tablero como una matriz
//y por cada casillero pinto el bitmap
	unsigned int alto = tablero->getAltura();
	unsigned int ancho = tablero->getAncho();
	unsigned int posiColumna = 0;
	unsigned int posifila = 0;

	BMP tableroBMP;


	tableroBMP.SetSize(ancho*10,alto*10);
	tableroBMP.SetBitDepth( 24 );

	RGBApixel rgbColor;
	rgbColor.Red = 255;
	rgbColor.Green = 0;
	rgbColor.Blue = 0;

	Color color;

	for(unsigned int h=0;h<ancho;h++){
		for(unsigned int w=0;w<alto;w++){

			color = (tablero->getCasillero(h,w)).getColor();// obtengo el color del casillero

			rgbColor.Red = color.rojo;//asigno dicho color
			rgbColor.Green = color.verde;
			rgbColor.Blue = color.azul;

			fillRectangulo(&tableroBMP,&rgbColor,posiColumna,posifila,10,10);//pinto un rectangulo
			posifila+=10;
		}
		posiColumna+=10;
		posifila=0;
	}
	//guardar la imagen bmp
	ruta.append(".bmp");
	const char *direccion = ruta.c_str();

	tableroBMP.WriteToFile( direccion );

}
//Precondicion:un objeto BMP, RGBApixel para saber el color del pixel
//ubicacion (posiX,posiY) dimensiones (alto,ancho)
void Graficador::fillRectangulo(BMP * tableroBMP,RGBApixel * rgbColor,unsigned int posiColumna, unsigned int posifila, unsigned int alto, unsigned int ancho){
	bool isOK = true;
	unsigned int y = posiColumna ;
	unsigned int x = posifila ;

	while(isOK && y<(posiColumna+alto)){
		while(isOK && x<(posifila+ancho)){
			isOK=tableroBMP->SetPixel(y,x,(*rgbColor));
			x++;
		}
		y++;
		x=posifila;
	}


}

